package com.longrise.android.loaddata;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

public class CacheUtils {
	private final static String SP_NAME = "bbt";
	private static SharedPreferences mPreferences; // SharedPreferences的实例

	private static SharedPreferences getSp() {
		if (mPreferences == null && null != LoadDataManager.getInstance().getContext()) {
			mPreferences = LoadDataManager.getInstance().getContext().getSharedPreferences(SP_NAME, Context.MODE_PRIVATE);
		}

		return mPreferences;
	}

	/**
	 * 通过SP获得boolean类型的数据，没有默认为false
	 * 
	 *
	 *            : 上下文
	 * @param key
	 *            : 存储的key
	 * @return
	 */
	public static boolean getBoolean(String key) {
		SharedPreferences sp = getSp();
		return sp.getBoolean(key, false);
	}

	/**
	 * 通过SP获得boolean类型的数据，没有默认为false
	 * 
	 * @param context
	 *            : 上下文
	 * @param key
	 *            : 存储的key
	 * @param defValue
	 *            : 默认值
	 * @return
	 */
	public static boolean getBoolean(String key, boolean defValue) {
		SharedPreferences sp = getSp();
		return sp.getBoolean(key, defValue);
	}

	/**
	 * 设置boolean的缓存数据
	 * 
	 * @param context
	 * @param key
	 *            :缓存对应的key
	 * @param value
	 *            :缓存对应的值
	 */
	public static void setBoolean(String key, boolean value) {
		SharedPreferences sp = getSp();
		Editor edit = sp.edit();// 获取编辑器
		edit.putBoolean(key, value);
		edit.commit();
	}

	/**
	 * 通过SP获得String类型的数据，没有默认为null
	 * 
	 * @param context
	 *            : 上下文
	 * @param key
	 *            : 存储的key
	 * @return
	 */
	public static String getString(String key) {
		SharedPreferences sp = getSp();
		return sp.getString(key, null);
	}

	/**
	 * 通过SP获得String类型的数据
	 * 
	 * @param context
	 *            : 上下文
	 * @param key
	 *            : 存储的key
	 * @param defValue
	 *            : 默认值
	 * @return
	 */
	public static String getString(String key, String defValue) {
		SharedPreferences sp = getSp();
		return sp.getString(key, defValue);
	}

	/**
	 * 设置String的缓存数据
	 * 
	 * @param context
	 * @param key
	 *            :缓存对应的key
	 * @param value
	 *            :缓存对应的值
	 */
	public static void setString(String key, String value) {
		SharedPreferences sp = getSp();
		Editor edit = sp.edit();// 获取编辑器
		edit.putString(key, value);
		edit.commit();
	}

	/**
	 * 通过SP获得Long类型的数据，没有默认为-1
	 * 
	 * @param context
	 *            : 上下文
	 * @param key
	 *            : 存储的key
	 * @return
	 */
	public static long getLong(String key) {
		SharedPreferences sp = getSp();
		return sp.getLong(key, -1);
	}

	/**
	 * 通过SP获得Long类型的数据
	 * 
	 * @param context
	 *            : 上下文
	 * @param key
	 *            : 存储的key
	 * @param defValue
	 *            : 默认值
	 * @return
	 */
	public static long getLong(String key, long defValue) {
		SharedPreferences sp = getSp();
		return sp.getLong(key, defValue);
	}

	/**
	 * 设置Long的缓存数据
	 * 
	 * @param context
	 * @param key
	 *            :缓存对应的key
	 * @param value
	 *            :缓存对应的值
	 */
	public static void setLong(String key, long value) {
		SharedPreferences sp = getSp();
		Editor edit = sp.edit();// 获取编辑器
		edit.putLong(key, value);
		edit.commit();
	}
	
	/**
	 * 删除缓存
	 * @param key 缓存对应的key
	 */
	public static void remove(String key) {
		SharedPreferences sp = getSp();
		Editor editor = sp.edit();
		editor.remove(key);
		editor.commit();
	}
}
